package com.example.ymm.modules1.service.hl.kq;

import com.alibaba.fastjson.JSONObject;
import com.example.ymm.base.BaseService;
import com.example.ymm.model.TableList;
import com.example.ymm.model.YmPageDto;
import com.example.ymm.modules1.entity.my.user.KqDakaLog;
import com.example.ymm.modules1.entity.my.user.KqDayLog;
import com.example.ymm.modules1.entity.my.user.KqDept;
import com.example.ymm.modules1.query.kq.KqApproveLogQueryCriteria;
import com.example.ymm.modules1.query.kq.KqDakaLogQueryCriteria;
import com.example.ymm.modules1.service.dto.heng.ApprovalCreateViewDto;
import com.example.ymm.modules1.service.dto.heng.kq.ViewApproveDakaLog;
import com.example.ymm.modules1.service.dto.heng.kq.ViewKqDakaLog;

import java.util.List;

public interface KqDakaLogService extends BaseService<KqDakaLog> {


    TableList<ViewKqDakaLog> list(KqDakaLogQueryCriteria criteria, YmPageDto ymPage);

    TableList<ViewKqDakaLog> pcList(KqDakaLogQueryCriteria criteria, YmPageDto ymPage);


    List<KqDakaLog> queryAll(KqDakaLogQueryCriteria criteria);


    TableList<ViewKqDakaLog> approvalTableList(KqApproveLogQueryCriteria criteria, YmPageDto ymPage);



    /**
     * 用户打卡视图-手机
     * @param criteria
     * @return
     */
    List<ViewKqDakaLog> phoneDakaList(KqDakaLogQueryCriteria criteria);


    /**
     * 用户打卡视图-pc
     * @param criteria
     * @return
     */
    List<ViewKqDakaLog> pcDakaList(KqDakaLogQueryCriteria criteria);


    /**
     * 获取缺卡
     * @param criteria
     * @return
     */
    List<ViewKqDakaLog> lackUserDakas(KqDakaLogQueryCriteria criteria);


    /**
     * 审批打卡视图
     * @param criteria
     * @return
     */
    List<ViewKqDakaLog> approvalDakaList(KqApproveLogQueryCriteria criteria);



    ViewKqDakaLog detail(String id);


    /**
     * 前端计算全天打卡时长
     * @param viewKqDakaLog
     * @return
     */
    ViewKqDakaLog countDakaDetail(ViewKqDakaLog viewKqDakaLog);


    /**
     * 批量修改打卡
     * @param approveDakaLog
     */
    void batchUpDakaLog(ViewApproveDakaLog approveDakaLog);


    String saveDakaDetail(ViewKqDakaLog viewKqDakaLog);


    /**
     * 获取休息记录-显示，展示
     */
    List<JSONObject> getUserXiuxiDetail(ViewKqDakaLog viewKqDakaLog);



    /**
     * 判断某个车间小组某一天有没有打卡
     * @param criteria
     * @return
     */
    Integer userDakaCount(KqDakaLogQueryCriteria criteria);


    /**
     * 同步某个车间小组，某一天的打卡数据
     * @param criteria
     */
    void syncKqDakaBuGroupId(KqDakaLogQueryCriteria criteria);

    /**
     * 同步打卡日期
     * @param criteria
     */
    void syncKqDayLog(KqDakaLogQueryCriteria criteria, KqDept kqDept);


    void syncAllDayLog(KqDakaLogQueryCriteria criteria);

    void syncAllInit();

    void testGetDd();


    /**
     * 考勤审批 发起前查看审批人
     * @return
     */
    ApprovalCreateViewDto kqApprovalCreateView();



    /**
     * 根据小组id查找打卡记录
     * @param criteria
     * @return
     */
    List<KqDakaLog> getByGroupId(KqDakaLogQueryCriteria criteria);


    KqDayLog oneByGroupId(KqDakaLogQueryCriteria criteria);


    List<KqDayLog> dayListByGroupId(KqDakaLogQueryCriteria criteria);




}
